package com.ctshk.rpc.season.service;

import com.ctshk.rpc.season.dto.PackageProductCostDTO;
import com.ctshk.rpc.season.dto.SeasonFixedProductPackageShipDTO;
import com.ctshk.rpc.season.req.SeasonFixedProductPackageShipReq;
import com.ctshk.rpc.season.req.UpdatePackageProductReq;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 * 套票-固定套票单项产品打包-船表 服务类
 * </p>
 *
 * @author 杨林
 * @since 2021-03-09
 */
public interface ISeasonFixedProductPackageShipService {
    /* @MethodName: 获取船票的价格
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/26 17:07
     **/
    PackageProductCostDTO getShipProductPrice(Long productId, LocalDate departureDate, Long userId, Integer channelType);

    /* @MethodName: 固定套票默认船票的价格
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/19 13:32
     **/
    BigDecimal getDefaultShipPrice(Long packageId, LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);

    List<SeasonFixedProductPackageShipDTO> getShipByPackageId(Long packageId, LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);


    /* @MethodName: 批量保存 景点门票产品信息
     * @Description: TODO
     * @Param: userId 用户id  productId 产品id packageId 打包id  shipReqList 船票集合
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/9 18:27
     **/
    void batchShipProduct(Long userId, Long packageId, List<SeasonFixedProductPackageShipReq> shipReqList);

    /* @MethodName: 获取固定套票 船票产品 信息
     * @Description: TODO
     * @Param: fixedSeasonId 固定套票id   packageId 产品打包id
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/11 13:52
     **/
    List<SeasonFixedProductPackageShipDTO> getSeasonFixedProductShipDtoList(Long packageId);


    /* @MethodName: 删除原来的船票产品
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/12 16:26
     **/
    void deletePreviousShip(Long id, Long packageId);

    /* @MethodName: 获取船票产品差价信息
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/22 18:01
     **/
    List<SeasonFixedProductPackageShipDTO> getShipDifferencePrice(UpdatePackageProductReq req);
}
